import axios from "axios";
// 导入封装的token
import { getToken } from "./auth";
// 如果给大家的请求要求传递过来的数据格式是：
// application/x-www-form-urlencoded格式，需要安装一下qs.不需要安装
// qs是axios里面自带的。
import qs from "qs";

// 创建实例  instance（实例）
const instance = axios.create({
  baseURL: "http://192.168.7.58:3009", //接口域名
  timeout: 6000, //请求超时时间
});

// Interceptors(拦截器)
// 您可以在那时处理请求或响应之前拦截它们。
//  全局请求拦截器。config（配置）
instance.interceptors.request.use(
  function (config) {
    getToken();
    // 解决application/x-www-form-urlencoded格式
    // config.data = qs.stringify(config.data);
    // 全局设置请求头：判断有没有token
    if (getToken()) {
      config.headers.authorization = `Bearer ${localStorage.getItem("token")}`;
    }
    return config;
  },
  // 请求错误
  function (error) {
    return Promise.reject(error);
  }
);

// 全局响应拦截
instance.interceptors.response.use(
  function (response) {
    // 处理axios的请求 res.data   现在可以直接res得到信息。
    return response.data;
  },
  function (error) {
    return Promise.reject(error);
  }
);

// 封装get请求  axios.get(url,{params:{}})
export const get = (url, params) => instance.get(url, { params });
// 封装post请求  axios.post(url,data)
export const post = (url, data) => instance.post(url, data);
// 封装delete删除请求  axios.delete(url,{params:{}})
export const del = (url, params) => instance.delete(url, { params });

export const put = (url, data) => instance.put(url, data);

// 默认导出 创建的实例
export default instance;
